This invention relates, in general, to the tracing and debugging of programs and, in particular, to the selective debugging of versions of programs concurrently executing within a computing environment.
Typically, production environments are expected to be highly-available or even continuously available. Thus, programs executing within the production environment are expected to have very few errors, if any. In order to reduce the number of errors of a new or modified program executing within the production environment, it is desirable to trace the program, as it executes within that environment. This allows the developer to see how the particular program handles in the production environment.
Although various techniques have been previously used to trace programs in the production environment, further enhancements are needed. For example, a need exists for a capability that allows selective debugging of programs within a production environment. In particular, a need exists for a capability that allows a version of a program to be debugged, while other versions of the program are still executing. A further need exists for a capability that allows one or more versions of programs to be debugged, without affecting other versions of the program or other programs of the production environment.
A yet further need exists for a capability that allows a program version to be selected for debugging based on one or more tasks associated with the version. Still further, a need exists for a capability that enables a version to be debugged for a particular task, without affecting other tasks using that version, other versions of the program or other programs.
The shortcomings of the prior art are overcome and additional advantages are provided through the provision of a method of selectively debugging a program of a computing environment. The method includes, for instance, selecting from a plurality of versions of a program a version of the program to be debugged, wherein at least two versions of the plurality of versions are executing concurrently within the computing environment; and debugging the version of the program.
In one embodiment, the debugging of the selected version does not affect use of other versions of the program.
In yet another example, the selecting is responsive to the receipt of at least one task of the computing environment. The at least one task is associated with the version to be debugged. Further, the debugging of the version associated with the at least one task does not affect one or more other tasks using the version being debugged.
System and computer program products corresponding to the above-summarized methods are also described and claimed herein.
Advantageously, one aspect of the present invention allows a debug session to operate against a single invocation of an application program or version of the application program without affecting other tasks or other debug sessions. This allows many application developers to test their changes simultaneously. Further, in one aspect of the present invention, a new version of the application program is allowed to be loaded and tested on a production system without affecting the current application program or tasks running through it. Yet further, one aspect of the present invention advantageously allows multiple program debug sessions to be active against concurrently loaded versions of an application program.
Additional features and advantages are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention.